{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 掌握 pandas 数据导入、清洗、重塑\n",
    "# 进一步进行 数据可视化 matplotlib\n",
    "\n",
    "# 信息可视化（也叫绘图） 是数据分析中最重要的工作之一\n",
    "# 它可能是探索过程的一部分， 例如， 帮助我们找出异常值、 必要的数据转换、 得出有关模型的idea等。 \n",
    "# 另外， 做一个可交互的数据可视化也许是工作的最终目标。 \n",
    "\n",
    "# Python有许多库进行静态或动态的数据可视化， \n",
    "# 但这里重要关注于matplotlib（http://matplotlib.org/） 和基于它的库。\n",
    "\n",
    "# matplotlib是一个用于创建出版质量图表的桌面绘图包（主要是2D方面）\n",
    "# 该项目是由 John Hunter 于2002年启动的， \n",
    "# 其目的是为 Python 构建一个 MATLAB 式的绘图接口。 \n",
    "\n",
    "# matplotlib 和 IPython 社区进行合作， 简化了从 IPython shell（包括现在的Jupyter notebook） \n",
    "#    进行交互式绘图。 matplotlib支持各种操作系统上许多不同的 GUI 后端， \n",
    "#    而且还能将图片导出为各种常见的矢量（vector） 和光栅（raster） 图： \n",
    "#    PDF、 SVG、 JPG、 PNG、 BMP、 GIF等\n",
    "\n",
    "# 随着时间的发展， matplotlib 衍生出了多个数据可视化的工具集， \n",
    "#    它们使用 matplotlib 作为底层。 其中之一是 seaborn（http://seaborn.pydata.org/）\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# using matplotlin in notebook\n",
    "%matplotlib notebook\n",
    "# 将 matplotlib 绘制的图标嵌入 notebook\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = np.arange(10)\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x8db7288>]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(data ** 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# seaborn 库 和 pandas 内置绘图函数能过处理普通绘制图\n",
    "# 自定义高级功能需要 matplotlib API\n",
    "# matplotlib 官网的示例和文档就是学习的最佳资料\n",
    "# 示例：https://matplotlib.org/gallery/index.html\n",
    "# 教程：https://matplotlib.org/tutorials/index.html\n",
    "# 文档：https://matplotlib.org/contents.html\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD8CAYAAAB6paOMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAXDklEQVR4nO3df8yddX3/8efLIpCh02q7xECBulWhkkX0BF1MposClSWtycxWFiIYtmZMXKLffBMW/2Ap/zjNvi4mbFKzRrdkFOWP7+4tGoICcTFWexoY2i7V2jlpar5Ui/yDA4H394/rIp7evW/ui57rPqflej6Sk14/Ptd5f86dz93Xfa6fqSokScP1inl3QJI0XwaBJA2cQSBJA2cQSNLAGQSSNHAGgSQN3IpBkGR3kseTfG+Z9Uny2SSHkzya5G0T625M8oP2dWOfHZem5diWGl2+EXwB2PIi698PbGpfO4C/B0jyOuB24B3AVcDtSdZO01mpZ1/AsS2tHARV9Q3gxIs02Qb8YzX2Aq9N8gbgWuD+qjpRVU8A9/Piv3TSTDm2pcY5PbzHhcBjE/NH22XLLT9Fkh00f3FxwQUXvP2yyy7roVvS0vbv3//TqlrfoaljW2eNlzCuT9FHEGSJZfUiy09dWLUL2AUwGo1qPB730C1paUn+u2vTJZY5tnVGegnj+hR9nDV0FNgwMX8RcOxFlktnC8e2BqGPIFgAPtSeYfFO4Mmq+glwH3BNkrXtgbRr2mXS2cKxrUFYcddQkruB9wDrkhylOVvilQBV9TngK8B1wGHgKeDD7boTSe4A9rVvtbOqXuzAnDRTjm2psWIQVNX1K6wv4CPLrNsN7D69rkmry7EtNbyyWJIGziCQpIEzCCRp4AwCSRo4g0CSBs4gkKSBMwgkaeAMAkkaOINAkgbOIJCkgTMIJGngDAJJGjiDQJIGziCQpIEzCCRp4AwCSRq4TkGQZEuSQ0kOJ7ltifWfSfJI+/p+kp9PrHtuYt1Cn52XpuG4lhpdHlW5BrgTuJrmod37kixU1cEX2lTVxybafxS4cuItflFVb+2vy9L0HNfSr3T5RnAVcLiqjlTVM8AeYNuLtL8euLuPzkmryHEttboEwYXAYxPzR9tlp0hyCbAReGBi8flJxkn2JvnAMtvtaNuMjx8/3rHr0lRWfVy32zq2dcbrEgRZYlkt03Y7cG9VPTex7OKqGgF/DPxtkt885c2qdlXVqKpG69ev79AlaWqrPq7Bsa2zQ5cgOApsmJi/CDi2TNvtLPr6XFXH2n+PAA9x8n5WaV4c11KrSxDsAzYl2ZjkXJpfilPOkkjyZmAt8K2JZWuTnNdOrwPeBRxcvK00B45rqbXiWUNV9WySW4H7gDXA7qo6kGQnMK6qF355rgf2VNXk1+vLgbuSPE8TOp+cPCtDmhfHtfQrOXl8z99oNKrxeDzvbuhlLMn+dv/+TDm2tZqmGddeWSxJA2cQSNLAGQSSNHAGgSQNnEEgSQNnEEjSwBkEkjRwBoEkDZxBIEkDZxBI0sAZBJI0cAaBJA2cQSBJA2cQSNLAGQSSNHAGgSQNXKcgSLIlyaEkh5PctsT6m5IcT/JI+/qTiXU3JvlB+7qxz85L03JsSx0eVZlkDXAncDXNA7/3JVlY4tF891TVrYu2fR1wOzACCtjfbvtEL72XpuDYlhpdvhFcBRyuqiNV9QywB9jW8f2vBe6vqhPtL8j9wJbT66rUO8e2RLcguBB4bGL+aLtssT9I8miSe5NseCnbJtmRZJxkfPz48Y5dl6bm2JboFgRZYtniJ97/K3BpVf028DXgiy9hW6pqV1WNqmq0fv36Dl2SeuHYlugWBEeBDRPzFwHHJhtU1c+q6ul29vPA27tuK82RY1uiWxDsAzYl2ZjkXGA7sDDZIMkbJma3Av/ZTt8HXJNkbZK1wDXtMulM4NiW6HDWUFU9m+RWmkG+BthdVQeS7ATGVbUA/EWSrcCzwAngpnbbE0nuoPmFA9hZVSdW4XNIL5ljW2qk6pTdmnM1Go1qPB7Puxt6GUuyv6pGs67r2NZqmmZce2WxJA2cQSBJA2cQSNLAGQSSNHAGgSQNnEEgSQNnEEjSwBkEkjRwBoEkDZxBIEkDZxBI0sAZBJI0cAaBJA2cQSBJA2cQSNLAdQqCJFuSHEpyOMltS6z/eJKD7QO+v57kkol1zyV5pH0tLN5WmhfHtdRY8QllSdYAdwJX0zyndV+Shao6ONHsYWBUVU8luQX4FPBH7bpfVNVbe+63NBXHtfQrXb4RXAUcrqojVfUMsAfYNtmgqh6sqqfa2b00D/KWzmSOa6nVJQguBB6bmD/aLlvOzcBXJ+bPTzJOsjfJB5baIMmOts34+PHjHbokTW3VxzU4tnV2WHHXEJAlli35oOMkNwAj4N0Tiy+uqmNJ3gg8kOS7VfXDk96sahewC5rnunbquTSdVR/X4NjW2aHLN4KjwIaJ+YuAY4sbJXkf8Alga1U9/cLyqjrW/nsEeAi4cor+Sn1xXEutLkGwD9iUZGOSc4HtwElnSSS5EriL5pfl8Ynla5Oc106vA94FTB6Mk+bFcS21Vtw1VFXPJrkVuA9YA+yuqgNJdgLjqloAPg28CvhyEoAfV9VW4HLgriTP04TOJxedlSHNheNa+pVUnVm7LUejUY3H43l3Qy9jSfZX1WjWdR3bWk3TjGuvLJakgTMIJGngDAJJGjiDQJIGziCQpIEzCCRp4AwCSRo4g0CSBs4gkKSBMwgkaeAMAkkaOINAkgbOIJCkgTMIJGngDAJJGjiDQJIGrlMQJNmS5FCSw0luW2L9eUnuadd/O8mlE+v+sl1+KMm1/XVdmp5jW+oQBEnWAHcC7wc2A9cn2byo2c3AE1X1W8BngL9ut91M8yzYtwBbgL9r30+aO8e21OjyjeAq4HBVHamqZ4A9wLZFbbYBX2yn7wXem+Yhr9uAPVX1dFX9F3C4fT/pTODYlujw8HrgQuCxifmjwDuWa9M+FPxJ4PXt8r2Ltr1wcYEkO4Ad7ezTSb7Xqff9Wwf8dEB151l7np/5ze2/jm3rvpxqv3nlJkvrEgRZYtniJ94v16bLtlTVLmAXQJLxPB4sPs/afubZ135hconVjm3rnpW1J8b1S9Zl19BRYMPE/EXAseXaJDkHeA1wouO20rw4tiW6BcE+YFOSjUnOpTlAtrCozQJwYzv9QeCBqqp2+fb2zIuNwCbgO/10XZqaY1uiw66hdr/orcB9wBpgd1UdSLITGFfVAvAPwD8lOUzz19L2dtsDSb4EHASeBT5SVc+tUHLX6X+cqc2rtp95DrUd29Z9mdU+7bpp/riRJA2VVxZL0sAZBJI0cHMLgmku7Z9B7Y8nOZjk0SRfT3LJLOpOtPtgkkrSyyloXeom+cP2Mx9I8s991O1SO8nFSR5M8nD7876up7q7kzy+3Hn7aXy27dejSd7WR932vecytuc1rrvUnmjn2J6u5uqM66qa+YvmwNwPgTcC5wL/AWxe1ObPgc+109uBe2ZY+/eAX2unb+mjdpe6bbtXA9+guVhpNKPPuwl4GFjbzv/GDH/Wu4Bb2unNwI96qv27wNuA7y2z/jrgqzTXA7wT+PbZPLbnNa4d27Md26s1ruf1jWCaS/tXvXZVPVhVT7Wze2nOEV/1uq07gE8B/9NDza51/xS4s6qeAKiqx2dYu4Bfb6dfQ0/n4lfVN2jO8lnONuAfq7EXeG2SN/RQel5je17julPtlmN7Sqs1rucVBEtd2r/48vyTLu0HXri0fxa1J91Mk7CrXjfJlcCGqvq3Hup1rgu8CXhTkm8m2Ztkywxr/xVwQ5KjwFeAj/ZUeyUvdRz0+b6rMbbnNa471XZsz2xsn9a47nKLidUwzaX9s6jdNExuAEbAu1e7bpJX0Nzd8qYeanWu2zqH5iv0e2j+Svz3JFdU1c9nUPt64AtV9TdJfofmnP0rqur5KWv30bfVet/VqD2vcb1ibcf2TMf2aY2teX0jmObS/lnUJsn7gE8AW6vq6RnUfTVwBfBQkh/R7N9b6OGgWtef9b9U1S+ruZPmIZpfnml1qX0z8CWAqvoWcD7NTbtW22rdImJeY3te47pLbcf27Mb26Y3rPg6cnMYBj3OAI8BGfnWg5S2L2nyEkw+ofWmGta+kORC0aZafeVH7h+jngFqXz7sF+GI7vY7mq+XrZ1T7q8BN7fTl7aBNTz/zS1n+oNrvc/JBte+czWN7XuPasT37sb0a47q3wXAaH+Y64PvtwPxEu2wnzV8q0KTnl2nu8/4d4I0zrP014P8Bj7SvhVnUXdS2l1+Wjp83wP+huV3Cd4HtM/xZbwa+2f4iPQJc01Pdu4GfAL+k+SvpZuDPgD+b+Mx3tv36bl8/63mO7XmNa8f27Mb2ao1rbzEhSQPX5VGVp30BQ5Ibk/ygfd241PaSpPnqcrD4CzT72ZbzfpqDL5tonsT09wBJXgfcTvPEp6uA25OsnaazkqT+rRgEdfoXMFwL3F9VJ6q5mON+XjxQJElz0Md1BMtdwND5woZMPNf1ggsuePtll13WQ7ekpe3fv/+nVbV+3v2QzhR9BMFUz3SFk5/rOhqNajw+7UdvSitK8t/z7oN0JunjgrLlLmDwma6SdBboIwgWgA+1Zw+9E3iyqn5C8/i/a5KsbQ8SX9MukySdQVbcNZTkbpr7dKxrb550O/BKgKr6HM3NlK6juTjmKeDD7boTSe6geUA4wM6q6uMWEZKkHnV5eP31K6wvmkvml1q3G9h9el2TJM2Cj6qUpIEzCCRp4AwCSRo4g0CSBs4gkKSBMwgkaeAMAkkaOINAkgbOIJCkgTMIJGngDAJJGjiDQJIGziCQpIEzCCRp4AwCSRo4g0CSBq5TECTZkuRQksNJblti/WeSPNK+vp/k5xPrnptYt9Bn5yVJ0+vyqMo1wJ3A1TQPpN+XZKGqDr7Qpqo+NtH+o8CVE2/xi6p6a39dliT1qcs3gquAw1V1pKqeAfYA216k/fXA3X10TpK0+roEwYXAYxPzR9tlp0hyCbAReGBi8flJxkn2JvnAMtvtaNuMjx8/3rHrkqQ+dAmCLLGslmm7Hbi3qp6bWHZxVY2APwb+NslvnvJmVbuqalRVo/Xr13fokiSpL12C4CiwYWL+IuDYMm23s2i3UFUda/89AjzEyccPJElz1iUI9gGbkmxMci7Nf/annP2T5M3AWuBbE8vWJjmvnV4HvAs4uHhbSdL8rHjWUFU9m+RW4D5gDbC7qg4k2QmMq+qFULge2FNVk7uNLgfuSvI8Teh8cvJsI0nS/OXk/7fnbzQa1Xg8nnc39DKWZH973EoSXlksSYNnEEjSwBkEkjRwBoEkDZxBIEkDZxBI0sAZBJI0cAaBJA2cQSBJA2cQSNLAGQSSNHAGgSQNnEEgSQNnEEjSwBkEkjRwnYIgyZYkh5IcTnLbEutvSnI8ySPt608m1t2Y5Aft68Y+Oy9Jmt6KTyhLsga4E7ia5vnF+5IsLPGksXuq6tZF274OuB0Y0Tzwfn+77RO99F6SNLUu3wiuAg5X1ZGqegbYA2zr+P7XAvdX1Yn2P//7gS2n11VJ0mroEgQXAo9NzB9tly32B0keTXJvkg0vZdskO5KMk4yPHz/eseuSpD50CYIssWzxg47/Fbi0qn4b+BrwxZewLVW1q6pGVTVav359hy5JkvrSJQiOAhsm5i8Cjk02qKqfVdXT7ezngbd33VaSNF9dgmAfsCnJxiTnAtuBhckGSd4wMbsV+M92+j7gmiRrk6wFrmmXSZLOECueNVRVzya5leY/8DXA7qo6kGQnMK6qBeAvkmwFngVOADe1255IcgdNmADsrKoTq/A5JEmnKVWn7LKfq9FoVOPxeN7d0MtYkv1VNZp3P6QzhVcWS9LAGQSSNHAGgSQNnEEgSQNnEEjSwBkEkjRwBoEkDZxBIEkDZxBI0sAZBJI0cAaBJA2cQSBJA2cQSNLAGQSSNHAGgSQNnEEgSQPXKQiSbElyKMnhJLctsf7jSQ4meTTJ15NcMrHuuSSPtK+FxdtKkuZrxUdVJlkD3AlcTfMw+n1JFqrq4ESzh4FRVT2V5BbgU8Aftet+UVVv7bnfkqSedPlGcBVwuKqOVNUzwB5g22SDqnqwqp5qZ/cCF/XbTUnSaukSBBcCj03MH22XLedm4KsT8+cnGSfZm+QDS22QZEfbZnz8+PEOXZIk9WXFXUNAlli25BPvk9wAjIB3Tyy+uKqOJXkj8ECS71bVD096s6pdwC5oHl7fqeeSpF50+UZwFNgwMX8RcGxxoyTvAz4BbK2qp19YXlXH2n+PAA8BV07RX0lSz7oEwT5gU5KNSc4FtgMnnf2T5ErgLpoQeHxi+dok57XT64B3AZMHmSVJc7birqGqejbJrcB9wBpgd1UdSLITGFfVAvBp4FXAl5MA/LiqtgKXA3cleZ4mdD656GwjSdKcperM2iU/Go1qPB7Puxt6GUuyv6pG8+6HdKbwymJJGjiDQJIGziCQpIEzCCRp4AwCSRo4g0CSBs4gkKSBMwgkaeAMAkkaOINAkgbOIJCkgTMIJGngDAJJGjiDQJIGziCQpIEzCCRp4DoFQZItSQ4lOZzktiXWn5fknnb9t5NcOrHuL9vlh5Jc21/XJUl9WDEIkqwB7gTeD2wGrk+yeVGzm4Enquq3gM8Af91uu5nmGcdvAbYAf9e+nyTpDNHlG8FVwOGqOlJVzwB7gG2L2mwDvthO3wu8N83Di7cBe6rq6ar6L+Bw+36SpDPEig+vBy4EHpuYPwq8Y7k27cPunwRe3y7fu2jbCxcXSLID2NHOPp3ke5163791wE8HVHeetef5md88p7rSGalLEGSJZYufeL9cmy7bUlW7gF0AScbzerD4vGr7mWdfex51pTNVl11DR4ENE/MXAceWa5PkHOA1wImO20qS5qhLEOwDNiXZmORcmoO/C4vaLAA3ttMfBB6oqmqXb2/PKtoIbAK+00/XJUl9WHHXULvP/1bgPmANsLuqDiTZCYyragH4B+Cfkhym+Sawvd32QJIvAQeBZ4GPVNVzK5TcdfofZ2rzqu1nHk5t6YyT5g93SdJQeWWxJA2cQSBJAze3IJjmthUzqP3xJAeTPJrk60kumUXdiXYfTFJJejm9skvdJH/YfuYDSf65j7pdaie5OMmDSR5uf97X9VR3d5LHl7smJY3Ptv16NMnb+qgrnZWqauYvmoPOPwTeCJwL/AeweVGbPwc+105vB+6ZYe3fA36tnb6lj9pd6rbtXg18g+ZCvNGMPu8m4GFgbTv/GzP8We8CbmmnNwM/6qn27wJvA763zPrrgK/SXOvyTuDbfY9zX77Olte8vhFMc9uKVa9dVQ9W1VPt7F6a6x9WvW7rDuBTwP/0ULNr3T8F7qyqJwCq6vEZ1i7g19vp19DTdSZV9Q2aM9iWsw34x2rsBV6b5A191JbONvMKgqVuW7H41hMn3bYCeOG2FbOoPelmmr8cV71ukiuBDVX1bz3U61wXeBPwpiTfTLI3yZYZ1v4r4IYkR4GvAB/tqfZKXuo4kF62utxiYjVMc9uKWdRuGiY3ACPg3atdN8kraO7celMPtTrXbZ1Ds3voPTTffv49yRVV9fMZ1L4e+EJV/U2S36G5HuWKqnp+ytp99E0ahHl9I5jmthWzqE2S9wGfALZW1dMzqPtq4ArgoSQ/otlvvdDDAeOuP+t/qapfVnOX2EM0wTCtLrVvBr4EUFXfAs6nuSHdavP2J1JrXkEwzW0rVr12u4vmLpoQ6Gt/+YvWraonq2pdVV1aVZfSHJvYWlXT3iCty8/6/9IcICfJOppdRUemrNu19o+B97a1L6cJguM91F7JAvCh9uyhdwJPVtVPZlBXOuPMZddQTXHbihnV/jTwKuDL7fHpH1fV1hnU7V3HuvcB1yQ5CDwH/O+q+tmMav8v4PNJPkaza+amPgI/yd00u7rWtccfbgde2fbrczTHI66jeUbGU8CHp60pna28xYQkDZxXFkvSwBkEkjRwBoEkDZxBIEkDZxBI0sAZBJI0cAaBJA3c/weikyn/t4O97AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Figure 和 Subplot\n",
    "\n",
    "# matplotlib 的图形都位于 Figure 对象中\n",
    "# 可以用 plt.figure 创建新的 Figure\n",
    "fig = plt.figure()\n",
    "\n",
    "# plt.figure有一些参数选项， \n",
    "#     特别是 figsize， 它用于确保当图片保存到磁盘时具有一定的大小和纵横比。\n",
    "# 不能通过空的 Figure 绘图，必须用 add_subplot 创建一个或者多个 subplot 才可以绘图\n",
    "ax1 = fig.add_subplot(2, 2, 1)\n",
    "# 2 * 2 两行两列 四张图位置，编号从 1 开始\n",
    "ax2 = fig.add_subplot(2, 2, 2)\n",
    "ax3 = fig.add_subplot(2, 2, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x9e3d108>]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# notebook 中，每一个小窗口重新执行后，图形被重置\n",
    "# 对于复杂图形，必须在将所有绘图命令存放在一个窗口 cell 中\n",
    "\n",
    "fig = plt.figure()\n",
    "ax1 = fig.add_subplot(2, 2, 1)\n",
    "ax2 = fig.add_subplot(2, 2, 2)\n",
    "ax3 = fig.add_subplot(2, 2, 3)\n",
    "\n",
    "# 如果这时执行一条绘图命令（plt.plot([1.5, 3.5, -2, 1.6])）， \n",
    "#   matplotlib 就会在最后一个用过的 subplot（如果没有则创建一个）上进行绘制， \n",
    "#   隐藏创建 figure 和 subplot 的过程\n",
    "plt.plot(np.random.randn(50).cumsum(), 'k--')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x9dcaf08>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 'k--' 是一个 线型 选项，绘制 黑色虚线 图\n",
    "# fig.add_subplot 返回的对象是 AxesSubplot 对象\n",
    "# 直接调用其实例方法可以在指定空位置绘图\n",
    "ax1.hist(np.random.randn(100), bins=20, color='k', alpha=0.3)\n",
    "ax2.scatter(np.arange(30), np.arange(30) + 3 * np.random.randn(30))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0xa2fce08>]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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ZuMj7WBm482syMyKSktL4zycJEtZWRnz58/nqquuol276tPkkksuobKysl754pw5c7jxxhtZtmxZUKGKSFi8CX2wu58JjARuNbPzG+7g7lPcvcDdC7p16xbn4SQZKioqGDNmDKFQiGuvvbZ2+7nnnsvhhx/OnDlzarc9//zzHHXUUVx00UVBhCoidcSV0N29JPxzG/A6cHYigpLkOv/88znzzDOZN28e7k5eXh7f//73ee655+jfv3/tfnl5eVx88cVMnz6dnTt3UlZWxltvvcU111yjskORVODurXoAhwId6/z+F2BEU+8ZOHCgS9tbvHix/+xnP/MdO3b4Cy+84Lt27Yq67549exzwvLw8B3zChAkeCoWi7r9x40afMmWKu7v/93//twO+YsWKhH+H1gCKvJXnsx56ZMIjnhF6d2CJma0C/gq85e7z4vg8SZC5c+cyadIkSkpKGDduHAMHDmTjxo0R9928eTNdu3Zl2rRpTJo0iQULFrBjx46on52fn8+NN94IwNdff82xxx7LgAED2uR7iEjLqH1uBho2bBhfffUVK1asYPHixVxxxRV07NiRwsLC2gUlGgqFQrUXP2O1atUqOnTowHe/+91EhB03tc+VbKeyxQwTCoUoKirirLPOAmDIkCEsXLiQPXv2MHToUD777LOI72tpMgc444wzUiaZi4gSesYpLi5m586dtQkdYMCAASxcuJB9+/bx/vvv19v/lltu4V//9V+THaaItAGVJmSYkpISunfvXi+hA/Tv35/169c3WrfzjTfeYNiwYckMUUTaiBJ6hhk6dChbt26N+Frnzp1xd/bs2UPHjh0pKyujpKSE0047LclRikhb0JRLBjKzqMvADRo0qLY3y5o1awCU0EUyhBJ6BqmoqKBfv35MmzYt6j59+vRh8eLFuDsff/wxoIQukimU0DPImjVrWL16NTk5OVH3GTp0KKWlpaxdu5YOHTowePBgevXqlcQoRaStKKFnkOXLlwM0uiBa15AhQwBYtGgR119/PUuWLIk6PSMi6UUJPYMsX76cI444ghNOOCHqPscffzy9evVi0aJFJPOmMhFpe0roGWT58uUUFBQ0OeI2M37zm98wcuRIunbtyquvvprECEWkLalsMYNcdNFFdO/evdn9rr32Wt5++23Kyso48sgjkxCZiCSDEnoG+e1vfxvTfu7O//zP/wCqcBHJJJpyyQBVVVW1pYixmj59OgBadEQkc2iEngHefPNNLr/8ct566y0uueSSZvc3Mx544AH27NmThOhEJFnUPjcDDB8+nHXr1rFx48asXjlI7XMl22nKJc2tW7eOBQsWcPPNN2d1MhcRJfS091//9V/k5eXxk5/8JOhQRCRgSuhpzN2ZN28eV1xxRUzliiKS2fRv9DRmZnzyySfs3Lkz6FBEJAVohJ7mcnNzdXOQiABK6Glt3LhxPPHEE0GHISIpQgk9jVRWVtb+XlZWxgsvvMD27dsDjEhEUokSepq44YYb6NGjB1u2bAFgwYIFhEIhRowYEXBkIpIqlNDTxJAhQ9i+fTs///nPAZg7dy5HHHEEZ599dsCRiUiqUEJPYS+99BIjR46kvLyccePG8dBDD/HKK68wd+5c5s2bx/Dhw3UzkYjUUkJPYYWFhSxdupROnToBcPfdd9OnTx/GjRvHoEGDGDNmTMARikgqSdmEvmPHDv7lX/6FsrKyoEMJzPLlyznrrLNo1676z3TQQQfx1FNPccoppzBp0iSuuuqqgCMUkVSSsgn9V7/6FZMmTcraFXX27dvHRx991GiO/IILLmDRokX07NkzoMhEJFXFldDNbISZfWpmxWY2IVFBffzxx0yZMgWorubIRitXrqSqqirigs9a1FlEIml1QjezHOBJYCRwCnCNmZ2SiKDy8/P5t3/7Ny677DJKSkoS8ZGBmjlzJieccEKLpo+qqqoYOnSoqlhEJGbxlEicDRS7+wYAM3sJGA18Em9Qhx12GPfffz8VFRXk5eXF9J6Kigpyc3NTcvS6efNmNmzYwIwZM/jnf/7nmN5z3nnnUVhY2MaRiUgmiWfKpSewuc7zL8Lb6jGz8WZWZGZFpaWlTX7g/v37GT16NO+88w5AzMkc4K677uKRRx6Jef9kuu222zj99NOZOnVqo9fWrVvHN99802j7/v37kxGaiGSQeBJ6pKFwo+WP3H2Kuxe4e0Fz61fee++9zJo1q14yu+uuu/jhD3/YbDDvvfceb7/9dvNRJ9kf/vAHtm3bxnXXXceyZcv49NNPgerWtyUlJQwcOJC77rqr3nvKysro2LEjzzzzTBAhi0iaiiehfwH0rvO8F9DqCe/58+fz2GOPceuttzJy5Mja7RUVFY2SfF0rVqzg3XffpX///nz00UctWii5rRUVFTF+/Hief/55xo4dS05ODtOmTcPdGTZsGNOnT+emm27iySefZObMmbXvW758ORUVFRx33HEBRi8iacfdW/Wgev59A3Ac0B5YBZza1HsGDhzokXz55ZfevXt3P/XUU33v3r31Xps1a5YDXlhY2Oh9FRUVfsYZZ3ivXr38kUceccBLSkoiHiMIV199tXfq1Ml37tzp7u6FhYW+d+9enz9/vgM+efJk379/vxcUFHjnzp1948aN7u7+0EMPOeDl5eUBRp9+gCJv5fmshx6Z8IjvzXAJ8DfgM+C+5vaPltAfeOABP+igg/yjjz5q9NrOnTs9JyfH77vvvkavPf744w74K6+84oWFhQ743LlzIx4j2d544w1v166d33333fW2h0IhHzx4sPfu3du/+eYbd3cvLi72Tp06+dFHH+0lJSU+atQo79u3bxBhpzUldD2y/ZHUg0VL6FVVVf7BBx9EfM3d/dxzz/Vzzjmn3rZ9+/Z5t27dfPjw4R4KhbysrMwB/93vfhf1c5JlxowZDvhpp53mX375Zb3XrrzySgd80qRJ9bavWrXK77nnHg+FQt69e3e/9tprkxlyRlBC1yPbHynR2aldu3YMGDAg6uvXX389n3/+Oe5eW5Y4ffp0SktLmTBhAmbGEUccwdatW1Nibc3Ro0fzxBNPcNNNN9G+fft6r3Xv3p1OnTpxww031Nver18/+vXrR2VlJb/4xS849dRTkxmyiGQAc0/eRcSCggIvKipKyGc999xzvPTSS8ydOzdlas/nzp3LUUcd1eR/nKqqqqioqODggw9OYmTZwcxWuHtB0HGIBCVle7k05O7MmDGDlStXAtWj9nnz5tVL5kuWLGHs2LHs3bs36fFVVlZy0003cccddzS5X05OjpK5iLSJtEnou3fv5qc//Sm333477733HhUVFY322bZtGy+++CJr1qxJenyvv/46mzdvrl2AQkQk2dImoXfq1IkHH3yQd999l/PPPz/iXaFnnHEGAKtWrUp2eDz++OOccMIJ/OAHP0j6sUVEII0SOsCNN97IqaeeSm5uLtdff32j14877jg6duxYOy2TLMuWLeP999/n9ttvJycnJ6nHFhGpkRJVLrHKzc3llVdeobi4OGI/8Hbt2tGvX7+kj9CLi4vp3bt3xP/IiIgkS1qN0AFOPvlkRo0aFfX1s846K+lVL2PHjmXDhg107NgxqccVEakrrUbosXj88ccDOa4WaxaRoKXdCD1WW7ZsScpxFi1axLHHHssHH3yQlOOJiESTkQn9t7/9Laeddhrr169v82OtXbuWTZs28Z3vfKfNjyUi0pSMTOhjxowhNzeXyy67jJ07d1JzN+zSpUsTfsF03bp1HHrooVq0WUQCl5EJPT8/n1dffZXi4mIKCgq48847OXDgAGPGjOFHP/oRlZWVCTvWunXr6Nu3b8q0HxCR7JWRCR1gyJAhTJo0iQ0bNhAKhcjLy2PixIl8+OGHPPHEE7X77dixg0WLFvHiiy/yxBNP8Nlnn7XoODUJXSc8pIwAAASFSURBVEQkcMls7RitfW5b+vrrr2t/D4VCPmrUKD/kkENqF5NYtmyZU710ngPeqVMnf/3112vfs3nzZn/rrbc8FAo1+uxQKOS33HKLP//8823+PaR5qH2uHln+SNtui621adMmTjrpJE4++eTaO0r//Oc/06VLFwDGjRvHunXr2LBhA1u2bGHgwIGEQiFeffVVrrzyyiBDl2ao26Jku6xL6ACvvfYaRUVF/OY3v2k0971//35WrlzJOeecQygU4tFHH2Xq1KlUVlayZs0a8vLyavfdu3cv7du3Vw16ilBCl2yXlQm9pWbNmsXo0aN56qmnuPnmm2u3P/DAAzzyyCOUl5c3WshCkk8JXbJdxl4UTaRRo0Zx3nnn8Ze//KXe9nXr1nH00UcrmYtIStBcQQzMjDlz5jTq1aIKFxFJJRqhx6gmmW/YsIH//d//JRQK8emnn9KnT5+AIxMRqaaE3gK7d+9m4MCB3HHHHWzatIlvvvlGI3QRSRlK6C3QsWNHbrvtNqZPn85f//pXfv3rX/MP//APQYclIgKoyqXF9u7dyymnnELHjh354IMP6pUxSrBU5SLZTiP0FjrkkEOYOHEiH3/8MQ8++GDQ4YiI1FJCb4XRo0dz3nnnsXr16qBDERGppbLFVjAzFi9erA6LIpJSlNBbqV07/eNGRFKLspKISIZQQhcRyRBJLVs0s1Lg71Fe7gpsT1owyZfp3w+C/47Hunu3AI8vEqikJvSmmFlRJtcQZ/r3g+z4jiKpTFMuIiIZQgldRCRDpFJCnxJ0AG0s078fZMd3FElZKTOHLiIi8UmlEbqIiMRBCV1EJEMEntDNbISZfWpmxWY2Ieh4EsHMeptZoZmtNbM1ZnZ7eHsXM3vbzNaHfx4RdKzxMLMcM/vQzN4MPz/OzJaFv98MM9NiqyJJFGhCN7Mc4ElgJHAKcI2ZnRJkTAlSCdzp7icDg4Bbw99rArDQ3U8CFoafp7PbgbV1nv8n8Hj4+30F3BBIVCJZKugR+tlAsbtvcPcDwEvA6IBjipu7b3X3D8K/76Y66fWk+rtNDe82Fbg8mAjjZ2a9gB8AT4efG3Ah8Gp4l7T+fiLpKOiE3hPYXOf5F+FtGcPM8oEBwDKgu7tvheqkD3wnuMjiNhH4BRAKPz8SKHf3yvDzjPtbiqS6oBN6pIbiGVNHaWaHAa8BP3P3XUHHkyhmdimwzd1X1N0cYdeM+VuKpIOg+6F/AfSu87wXUBJQLAllZnlUJ/MX3H1mePOXZtbD3beaWQ9gW3ARxmUwcJmZXQIcDHSiesTe2cxyw6P0jPlbiqSLoEfoy4GTwtUR7YEfArMCjilu4fnkZ4C17v5YnZdmAdeFf78OeCPZsSWCu//S3Xu5ez7Vf7N33H0sUAiMCe+Wtt9PJF0FmtDDI7mfAvOpvnD4sruvCTKmBBkMXAtcaGYrw49LgIeB4Wa2Hhgefp5J7gHuMLNiqufUnwk4HpGsolv/RUQyRNBTLiIikiBK6CIiGUIJXUQkQyihi4hkCCV0EZEMoYQuIpIhlNBFRDLE/wed3fi5sArUKwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 如以上可知，绘图显示不了，重点 在 notebook 中绘图必须在一个 cell 中才有效\n",
    "fig = plt.figure()\n",
    "ax1 = fig.add_subplot(2, 2, 1)\n",
    "ax2 = fig.add_subplot(2, 2, 2)\n",
    "ax3 = fig.add_subplot(2, 2, 3)\n",
    "\n",
    "ax1.hist(np.random.randn(100), bins=20, color='k', alpha=0.3)\n",
    "ax2.scatter(np.arange(30), np.arange(30) + 3 * np.random.randn(30))\n",
    "ax3.plot(np.random.randn(50).cumsum(), 'k--')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000A561D48>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000A598DC8>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000A5CFF88>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x000000000A611848>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000A64EF08>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000A690608>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建一个包含 subplot 网格式 的 figure 十分常见\n",
    "# 等价于 == plt.subplots \n",
    "# 创建一个新的 Figure 对象，同时返回一个含有已创建的 subplot 对象的 numpy 数组\n",
    "\n",
    "# fig 是一个 Figure 对象，axes 是一个 subplot 对象数组\n",
    "fig, axes = plt.subplots(2, 3)\n",
    "axes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'matplotlib.figure.Figure'>\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(type(fig))\n",
    "type(axes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 查看函数参数情况，以及返回值 技巧\n",
    "# 当光标停留在括号中时，先按住 Shift 键，然后 双击 Tab 键 即可\n",
    "\n",
    "# 参数          说明\n",
    "# nrows         subplot的行数\n",
    "# ncols         subplot的列数\n",
    "# sharex        所有subplot应该使用相同的X轴刻度(调节xlim将会影响所有subplot)\n",
    "# sharey        所有subplot应该使用相同的Y轴刻度( 调节ylim将会影响所有subplot)\n",
    "# subplot_ _kw  用于创建各subplot的关键字字典\n",
    "# **fig_ _kw    创建figure时的其他关键字，如plt.subplots(2,2,figsize=(8,6))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 调整 subplot 周围的间距\n",
    "# 默认情况下，matplotlib 会在 subplot 外围留下一定的间距，\n",
    "#  并在 subplot 之间留下一定间距，该间距跟图像的高度和宽度有关\n",
    "#  所有调整了图像的大小，间距也会自动的调整\n",
    "\n",
    "# 利用 Figure 的 subplots_adjust 方法可以调整修改间距，也是一个顶级函数\n",
    "# subplots_adjust(left=None, bottom=None, \n",
    "#                 right=None, top=None,\n",
    "#                 wspace=None, hspace=None)\n",
    "\n",
    "# wspace 控制宽度的百分比\n",
    "# hspace 控制高度的百分比\n",
    "\n",
    "fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)\n",
    "\n",
    "for i in range(2):\n",
    "    for j in range(2):\n",
    "        axes[i, j].hist(np.random.randn(500), bins=50, color='k', alpha=0.5)\n",
    "\n",
    "plt.subplots_adjust(wspace=0, hspace=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 结果显示可知，其中的标签轴重叠了，matplotlib 不会检查标签是否重叠\n",
    "#  对于这种情况，只能自己设定 刻度位置、刻度标签\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0xbadc7c8>]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 颜色、标记、线型\n",
    "\n",
    "# matplotlib 的 plot 函数接受一组 X 和 Y 坐标， \n",
    "#  还可以接受一个表示 颜色 和 线型 的 字符串缩写\n",
    "# 例如，要根据 x 和 y 绘制 绿色虚线， 执行如下代码：\n",
    "# ax.plot(x, y, 'g--')\n",
    "\n",
    "# 这种在一个 字符串 中指定 颜色 和 线型 的方式非常方便。 \n",
    "# 在实际中， 如果用代码绘图， 可能不想通过处理 字符串 来获得想要的格式。 \n",
    "# 通过下面这种更为明确的方式也能得到同样的效果：\n",
    "# ax.plot(x, y, linestyle='--', color='g')\n",
    "\n",
    "# 常用的颜色可以使用 颜色缩写， 也可以指定颜色码（例如， '#CECECE'）\n",
    "# 可以通过查看 plot 的文档 字符串 查看所有 线型 的合集（在IPython和Jupyter中使用plot?）\n",
    "#  plot 线图 可以使用 标记 强调 数据点\n",
    "#   matplotlib 可以创建 连续线图， 在点之间进行 插值， 因此有时可能不太容易看出 真实数据点的位置\n",
    "#   标记也可以放到 格式字符串 中， 但 标记类型和 线型必须放在 颜色后面\n",
    "from numpy.random import randn\n",
    "plt.plot(randn(30).cumsum(), 'ko--')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0xbb474c8>]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de1xUdfoH8M8DyE28g2kiM17KvGtaP0QKDUxTV0utNNLNTDIr7efWVlJ2WclNKze3K1pay6xthWvlLa9cNDVRWvGaKTdRQhR/ooIC8/z+4LIgw8Aw58yZMzzv14tXeObM9/ucmXjmzPc85/slZoYQQgj9c9M6ACGEEMqQhC6EEC5CEroQQrgISehCCOEiJKELIYSL8NCiU39/fzYajVp0LYQQurV///58Zg6o63FNErrRaERKSooWXQshhG4RUaa1x2XIRQghXIQkdCGEcBGS0IUQwkVIQhdCCBchCV0IIVyEJHQhnJTJZILRaISbmxuMRiNMJpPWIQknp0nZohDCOpPJhKioKFy9ehUAkJmZiaioKABAZGSklqEJJ0ZKTJ9LRBkACgGUAShl5sHW9h88eDBLHboQdTMajcjMrF1ybDAYkJGR4fiAhFMgov3W8quSZ+jDmTlfwfaEaLKysrJs2i4EIGPoQjiloKAgm7YLASiX0BnAZiLaT0RRCrUphOa0ujC5cOFCEFGNbT4+PoiJiXFI/0KflBpyGcrMZ4ioPYAtRHSMmZOq71CR6KMAOcsQ+qDlhUlfX18wM/z9/XH+/HkwMwYNGiQXRIVVipyhM/OZiv/mAfg3gDst7BPLzIOZeXBAQJ2ThQnhNKKjo6uSeaWrV68iOjpa9b43bNiA7t27Izc3F2azGc8//zx27dqFw4cPq9630C+7q1yIqDkAN2YurPh9C4A3mXlTXc+RKhehB25ubrD090FEMJvNqvbNzMjLy8NNN90EAMjPz0fXrl0xYsQIxMfHq9q3cF71VbkocYZ+E4CdRPQfAD8DWG8tmQuhF4GBgRa3qzlkyMwoKCgAEVUlcwDw9/fHvHnzsGbNGpl6WtTJ7oTOzKeYuX/FT29mlqs2wiUMHDiw1oVJX19fVS9MJiUlITAwEDt37qz12Lx58xAREYHS0lLV+hf6psiNRbaSIRfh7K5cuYLOnTuje/fuyMzMRF5eHtq3b4/33ntP1QuT9957Lw4ePIj09HT4+Pio1o/QJ0cMuQihGq3KBr/44gsUFBRg6dKlOHnyJO677z7861//UjWZ//zzz9iyZQvmzZtnNZlfuHABH330kcXxfdHEMbPDfwYNGsRC1CcuLo59fX0Z5fc5MAD29fXluLg4VfstKyvjW265he+88042m82q9lXduHHjuE2bNnzp0iWr+3388ccMgDds2OCgyISzAJDCVnKrnKELp6VV2eC2bdtw4sQJzJs3r8YY+sWLF1Ubv87KysIPP/yAuXPnokWLFlb3ffzxx9GlSxdER0erXm0j9EUSunBaWs1nEhERgW3btmHixIlV2zZu3Ii2bdsiNTVVlT6DgoJw8OBBzJkzp959PT098cYbbyA1NRVr1qxRJR6hT5LQhdPSaj4TIsI999wDD4//3kjdr18/MLPF6hN7VZ5l9+nTB23atGnQcx555BH06tULr776qlS9iCqS0IXTiomJgZeXV41tvr6+eOqpp1BUVKRKn8888wxee+21Wts7deoEo9GIXbt2Kd7nk08+iccff9ymi5zu7u5YuHAhevTogf/7v/9TPCahT5LQhdOKjIzEH/7wBxARiAgGgwHLli3Du+++i/DwcJw7d07R/nJycvDpp5/i4sWLFh8fOnQodu3apWh1SWZmJlatWgU/P79aNe/1eeCBB7B27Vq0a9dOsXiEvklCF07tm2++wcWLF2E2m5GRkYEZM2bg448/RmpqKkJCQvDbb78p1teHH36IsrIyzJ071+LjoaGhyM3NxalTpxTrc8mSJSAivPDCC41u48SJE9iyZYtiMQn9koQunF7Lli1r/HvixInYvn07CgoKMGTIEOzevdvuPq5cuYJPP/0UDzzwALp27Wpxn1GjRuHDDz9E69at7e4PAHJzc7FixQr88Y9/ROfOnRvdzqxZszBp0iQEBQXJ+qNNnCR04bTeffdd/OEPf7B40a8ykbdu3Roffvih3X19+eWXuHDhAubNm1fnPkajEbNnz1ZsiGPp0qUoKSnBiy++aFc7Q4cOxaVLl5CdnQ1mrprmV5J60yMJXdRLq7s1v/32W+Tl5dWoNqnulltuwe7du7F8+XIAwGeffdboOENDQ7FgwQKEhIRY3S8nJwdr165t+EFYUPl6LlmyBG3btsXevXvtau/LL7+stc1R0/wKJ2PtriO1fuROUf3Q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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 还可以将其写成更为明确的形式：\n",
    "plt.plot(randn(30).cumsum(), color='k', linestyle='dashed', marker='o')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0xbbbb608>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 在线型图中， 非实际数据点 默认是按 线性方式插值 的。 \n",
    "#        可以通过 drawstyle 选项修改：\n",
    "data = np.random.randn(30).cumsum()\n",
    "plt.plot(data, 'k--', label='Default')\n",
    "\n",
    "plt.plot(data, 'k-', drawstyle='steps-post', label='steps-post')\n",
    "\n",
    "plt.legend(loc='best')\n",
    "# 可能注意到运行上面代码时有输出。 \n",
    "# matplotlib 会返回引用了 新添加的子组件的对象。 \n",
    "# 大多数时候， 可以放心地忽略这些输出。 \n",
    "# 这里， 因为传递了 label 参数到 plot，可以创建一个 plot 图例， 指明每条使用 plt.legend 的线。\n",
    "# 笔记： 必须调用 plt.legend（或使用ax.legend， 如果引用了轴的话） \n",
    "#           来创建图例， 无论绘图时是否传递 label 标签选项。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 刻度、 标签和图例\n",
    "\n",
    "# 对于大多数的图表装饰项， 其主要实现方式有二： \n",
    "#      1、使用过程型的 pyplot 接口（例如，matplotlib.pyplot） \n",
    "#      2、更为面向对象的原生 matplotlib API\n",
    "\n",
    "# pyplot 接口的设计目的就是交互式使用， 含有诸如 xlim、 xticks 和 xticklabels 之类的方法\n",
    "#   它们分别 控制图表的范围、 刻度位置、 刻度标签等。 \n",
    "# 其使用方式有以下两种：\n",
    "#       调用时不带参数， 则返回当前的参数值（例如， plt.xlim()返回当前的X轴绘图范围） 。\n",
    "#       调用时带参数， 则设置参数值（例如， plt.xlim([0,10])会将X轴的范围设置为0到10） 。\n",
    "\n",
    "# 所有这些方法都是 对 当前 或 最近创建的 AxesSubplot 起作用的。 \n",
    "# 它们各自对应 subplot 对象上的两个方法， 以 xlim 为例， 就是 ax.get_xlim和 ax.set_xlim\n",
    "#   建议使用 subplot 的实例方法（因为明确的事情， 而且在处理多个 subplot 时这样也更清楚一些）\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'My first matplotlib plot')"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 设置标题、轴标签、刻度、刻度标签\n",
    "\n",
    "# 自定义轴的信息\n",
    "# 创建并绘图一段随机漫步\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "ax.plot(np.random.randn(1000).cumsum())\n",
    "\n",
    "# 改变 x 轴的刻度，y 轴的刻度设置也一样\n",
    "# 使用 set_xticks : 告诉 matplotlib 将刻度放在数据范围的哪些位置，默认情况下，这些位置也是刻度标签\n",
    "# 使用 set_sticklabels ：将使用其他任意值作为标签\n",
    "ticks = ax.set_xticks([0, 250, 500, 750, 1000])\n",
    "labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'], \n",
    "                            rotation=30, fontsize='small')\n",
    "# rotation 选项设置 x 刻度标签 倾斜角度\n",
    "\n",
    "# set_xlabel : 设置 x 轴名称\n",
    "ax.set_xlabel('Stages')\n",
    "# set_title ： 设置 图像标题名称\n",
    "ax.set_title(\"My first matplotlib plot\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # 改变 x 轴的刻度，y 轴的刻度设置也一样\n",
    "# # 使用 set_xticks : 告诉 matplotlib 将刻度放在数据范围的哪些位置，默认情况下，这些位置也是刻度标签\n",
    "# # 使用 set_sticklabels ：将使用其他任意值作为标签\n",
    "# y_ticks = ax.set_yticks([-30, -20, -10, 0, 10])\n",
    "# y_labels = ax.set_yticklabels(['one', 'two', 'three', 'four', 'five'], \n",
    "#                               rotation=30, fontsize='small')\n",
    "# # set_ylabel : 设置 y 轴名称\n",
    "# ax.set_ylabel('Cumsum')\n",
    "\n",
    "# Y 轴的修改方式与此类似， 只需将上述代码中的 x 替换为 y 即可。 \n",
    "\n",
    "# 轴的类有集合方法， 可以批量设定 绘图选项。 前面的例子， 也可以写为：\n",
    "# props = {'title': 'My first matplotlib plot',\n",
    "#          'xlabel': 'Stages'} \n",
    "# ax.set(**props)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0xbe7ce48>"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 添加图例\n",
    "\n",
    "# 图例 legend 是另一种用于 标识图表元素 的重要手段\n",
    "# 添加图例方式多样，简单添加 subplot 的时候传入 label 参数，然后使用 ax.legend() 创建图例\n",
    "\n",
    "from numpy.random import randn\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "\n",
    "# 要从图例中去除一个或多个元素， 不传入 label 或传入 label='nolegend' 即可\n",
    "ax.plot(randn(1000).cumsum(), 'k', label='one')\n",
    "ax.plot(randn(1000).cumsum(), 'k--', label='two')\n",
    "ax.plot(randn(1000).cumsum(), 'k.', label='three')\n",
    "\n",
    "# loc 图例位置\n",
    "ax.legend(loc='best')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Important dates in the 2008-2009 financial crisis')"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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FMtZpObOwFOrkvqISHkR8RGRSiIy0ym/mohcNPdFRF4SkZoi0lBEdtmVmyUitcxttidkc8XQoUN5+umnWbFihfV1rHGkZs2anD5trDK+fPmmfo6Pj+c///kP58+f58ABw2wlvZf31atXKVy4MN27d+eJJ56wjBA/++wznn/++TTlmzZtysKFC1m6dCm//vorkHV3ILdDeqFAb5fbDSVqz/Xr19mzZw81a9bk2rVr+Pr6UqxYMS5cuMDq1avdqqNx48bMmDGDrl27prtMuFq1auzevRuA5cuXO8wD7NixgxMnTpCamsrChQtp3bo1YPTybOXatm3LokWLrFjc9s9Sv3796NOnj+4t3IHck6E9ixQpYgXh0bimUKFCJCcnk5yc7PAS27RpE7Nnz+b777+3FEd61tT2Q0enTp1i8eLFeHt7M3DgQJeeWJVSPP7448BNo8Q33niDa9euERYW5rCSzFNcv37dwfXIa6+9lm4o0NvldkOJgmFbUqhQIRITExkwYABBQUGA8ZL39/enRo0atGrVyu36WrduzaRJk+jUqRNr165Nk//888/TrVs3mjVrRtu2bR3+1w888ADDhw/n999/tyaiwQhF26hRI5o0acI333zDyJEjCQkJwdvb22HIsG/fvrz99tv06dMnS/dCk42kN/mQV7bsDO15LzNx4kQB5OLFiw6TwY899liaCeIqVaqkOT8iIkL+97//CSBVq1a1ygYHB7stQ2BgoHVepUqVPHl5mttk/fr10qlTp9uqY/HixfKPf/zDQxJpMgsZTD7fkz0Gza2xDQ85G8TZJlvtceV07/HHH7e8xL788ssMGzYMwPLk6g47duyw1uifO3cu3fFqTd7jlVdeYfXq1axatSq3RdG44K5woqfxPDbFYFuNYwtvevz48TRlnd10R0VFsXnzZis9ICCAokWLApmzNLZfkSQiHgsZ+v3339OrVy969+7Nvn37PFLnvUZoaCg//vhjls+fMmUKx48fp06dOh6USuMptGLQuMR5QrlRo0aAEfK0UKFCHDt2jPvvv5+nn36a69evO3hjXbVqlc0WBTBWxdgUw+14rO3WrVuWz7Xnu+++Y+nSpSxfvpzw8HCP1KnR3E1oxaBxifML3H45Ybt27ahVqxaHDx+mdu3aVrCfAwcOcOnSJQYMGOBwbsGCBbPUYwDDTUbbtm0Bw62HJ8mK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upWvv/6ahIQEvL29qVSpEp9//jnx/9/e2UdbVdZ5/PPlIuD18ioWghqBoI0hCaYGo4najPiaTSRjqJXa20oSJhdNOaZpM0alkzZBNOSAjQaijaYuKtEyXYpB5kvKxA2vAklCjkYiKPibP55nX/a5L3DOvWefs7f8Pmvddc/Z+9n7fu4+zz6//by/9hoAjY2NnH766bS0tDB//ny2bNnSJa8nnniC5uZmtm7dyuzZs1t7GC1atAgzY9iwYfTr12+35xk/fjzf+ta3mDdvHo2NjV1ycd5aeGBwnE5IevK0DQxr1qxpFxiSFc+GDh3auu2MM84AaF0iNN2AvXTpUo4++mguvPBC7r777i75jR07llGjRjF69GiADts7ykESM2fO5KKLLurS8c5bDw8MjtMJI0aMANovUHPDDTewZs2akm1Tpkxh3bp13HvvvQAsXLiQOXPmADBz5kwgrAaXnscoaaDeVemjIzZu3MgVV1zR+n7t2rUAvuymUzV8iKPjdMLIkSN54IEHOmy8XbBgQcn7pqYmBg0axLBhw3j11VdLqmSampqAMJld0hidJqliKpdZs2Zx4403ttvuYxCcauElBsfphGTUcI8e4TaZO3dup2mTL3+gXT19sm/atGmt8xGlqXTJ0I7GRNx0001MnDixovM4Tmd4icFxOuGiiy5i4MCBnHXWWQB86lOf4uSTT2b48OHt0vbq1avT8/Tv37/19eWXX95uf7klhu3bt3P44Yd32PV12rRpZZ3DccrBSwyO0wmSmDJlSknjc+/evVtfJ6OJ205z3ZaDDjqodXxAeubThMsuu2y3cyk99thjLFu2rDUo9OnTh+OPPx5oP/+R43QXDwyOUwHpwDB48GBg50ymnSGpw5JCmpaWll3uHzduXMk6CQMHDmThwoUAXHrppbs81nEqxQOD41RAOjB0NHCsM9LVT0kvpXHjxrVue/rppzs9NunplOb111/nwAMPZPPmzXz6058u28NxyiHzwCBphqTfSXpK0i2S+kh6p6TlklZLWiSpV0zbO75vjvuHZ+3nOJWQDgz77bdf2celA8Ps2bN58MEHueeee9i0aROwc92EjuhooZ+k3aKpqandPEiO010ybXyWNAyYDvyNmb0maTEwFTgFuM7MfiRpLnABMCf+/j8zO1jSVODrwNlZOjpOJaTHNFxyySVIKhlT0BnpOZUa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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 注解 以及 在 Subplot 上绘图\n",
    "\n",
    "# 处理标准绘图类型外，希望绘制一些子集的注解，\n",
    "# 注解 ：文本、箭头、或者其他图形\n",
    "# 注解和文字 通过 text arrow annotate 函数进行添加\n",
    "\n",
    "# text 可以将文本绘制在图表指定坐标（x， y），还可以自定义格式\n",
    "# ax.text(x, y, 'Hello world!',family='monospace', fontsize=10)\n",
    "\n",
    "# 注解中可以同时存在 文本和箭头\n",
    "# 根据最近的标准普尔500指数价格绘制一张曲线图， 并标出2008年到2009年金融危机期间的一些重要日期\n",
    "\n",
    "from datetime import datetime\n",
    "\n",
    "dataset_path = './../dataset/'\n",
    "\n",
    "# 创建 subplot 绘图对象\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "\n",
    "# 加载数据\n",
    "data = pd.read_csv(dataset_path + 'spx.csv', index_col=0, parse_dates=True)\n",
    "spx = data['SPX']\n",
    "\n",
    "# 绘制线图\n",
    "spx.plot(ax=ax, style='k-')\n",
    "\n",
    "# 设置 注解位置以及文本内容\n",
    "crisis_data = [(datetime(2007, 10, 11), 'Peak of bull market'),\n",
    "               (datetime(2008, 3, 12), 'Bear Stearns Fails'),\n",
    "               (datetime(2008, 9, 15), 'Lehman Bankruptcy')] \n",
    "\n",
    "# 批量处理 注解\n",
    "for date, label in crisis_data:\n",
    "    ax.annotate(label, xy=(date, spx.asof(date) + 75),\n",
    "                xytext=(date, spx.asof(date) + 225),\n",
    "                arrowprops=dict(facecolor='black', headwidth=4, width=2, \n",
    "                                headlength=4), horizontalalignment='left', \n",
    "                                verticalalignment='top')\n",
    "\n",
    "# Zoom in on 2007-2010\n",
    "# 设定 刻度以及标签信息\n",
    "ax.set_xlim(['1/1/2007', '1/1/2011'])\n",
    "ax.set_ylim([600, 1800])\n",
    "ax.set_title('Important dates in the 2008-2009 financial crisis')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.patches.Polygon at 0xbfd6508>"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 这张图中有几个重要的点要强调： \n",
    "#    ax.annotate 方法可以在指定的 x 和 y 坐标轴绘制标签。 \n",
    "#    set_xlim 和 set_ylim 人工设定起始和结束边界，而不使用 matplotlib 的默认方法。 \n",
    "#    用 ax.set_title 添加图标标题。\n",
    "\n",
    "# 更多有关注解的示例， 请访问 matplotlib 的在线示例库\n",
    "\n",
    "# 图形 （图像 和 图形 是两个概念，在计算机科学领域，不要混淆）的绘制要麻烦一些。 \n",
    "# matplotlib 有一些表示常见图形的对象\n",
    "# 这些对象被称为块（patch）。 其中有些（如 Rectangle 和 Circle）， \n",
    "# 可以在 matplotlib.pyplot 中找到，但完整集合位于 matplotlib.patches。\n",
    "\n",
    "# 要在图表中添加一个图形， 需要创建一个块对象 shp， \n",
    "# 然后通过 ax.add_patch(shp) 将其添加到 subplot中\n",
    "# 如果查看许多常见图表对象的具体实现代码，就会发现它们其实就是由块 patch 组装而成的\n",
    "\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "\n",
    "rect = plt.Rectangle((0.2, 0.75), 0.4, 0.15, color='k', alpha=0.3)\n",
    "circ = plt.Circle((0.7, 0.2), 0.15, color='b', alpha=0.3)\n",
    "pgon = plt.Polygon([[0.15, 0.15], [0.35, 0.4], [0.2, 0.6]], color='g', alpha=0.5)\n",
    "\n",
    "ax.add_patch(rect)\n",
    "ax.add_patch(circ)\n",
    "ax.add_patch(pgon)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将图表 保存到文件\n",
    "\n",
    "# 利用 plt.savefig 可以将当前图表保存到文件\n",
    "# 该方法相当于 Figure 对象的实例方法 savefig\n",
    "\n",
    "# 例如，要将图表保存为 SVG 文件，只需输入：\n",
    "#     plt.savefig('figpath.svg')\n",
    "\n",
    "# 文件类型 是通过 文件扩展名 推断出来的\n",
    "# 使用的是 .pdf，就会得到一个 PDF文件\n",
    "\n",
    "# 在发布 片时最常用到两个重要的选项是 dpi（控制“每英寸点数”分辨率） \n",
    "#                                bbox_inches（可以剪除当前图表周围的空白部分）\n",
    "# 要得到一张带有 最小白边 且 分辨率为 400DPI的 PNG 图片：\n",
    "#     plt.savefig('figpath.png', dpi=400, bbox_inches='tight')\n",
    "\n",
    "# savefig 并非一定要写入磁盘， 也可以写入任何 文件型的对象， 比如 BytesIO：\n",
    "# from io import BytesIO\n",
    "# buffer = BytesIO()\n",
    "# plt.savefig(buffer)\n",
    "# plot_data = buffer.getvalue()\n",
    "\n",
    "# savefig 参数表\n",
    "# 参数                 说明\n",
    "# fname               含有文件路径的字符串或Python的文件型对象。\n",
    "#                     图像格式由文件扩展名推断得出，例如 .pdf推断出PDF，.png推 断出PNG \n",
    "# dpi                 图像分辨率(每英寸点数)，默认为 100 \n",
    "# cecolor. edgecolor  图像的背景色， 默认为“w”(白色)\n",
    "# format              显式设置文件格式(“png”、“pdf” 、“svg” 、“ps'、\"eps” ....\n",
    "# bbox_ _inches       图表需要保存的部分。如果设置为“tight” ，则将尝试剪除图表周围的空白部分\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "# matplotlib 配置\n",
    "\n",
    "# matplotlib 自带一些配色方案，以及为生成出版质量的图片而设定的默认配置信息\n",
    "# 所有默认行为都能通过一组全局参数进行自定义，\n",
    "#    管理图像大小、subplot边距、配色方案、字体大小、网格类型等\n",
    "\n",
    "# 一种 Python 编程方式配置系统的方法是使用 rc 方法\n",
    "# 例如，将全局图形默认大小设置为 10X10 \n",
    "# 执行代码：plt.rc('figure', figsize=(10, 10))\n",
    "# rc 的第一个参数是希望自定义的对象 如'figure'、 'axes'、 'xtick'、 'ytick'、 'grid'、 'legend'等。\n",
    "#      其后可以跟上一系列的关键字参数。\n",
    "\n",
    "# 一个简单的办法是将这些选项写成一个字典：\n",
    "# font_options = {'family' : 'monospace', \n",
    "#                 'weight' : 'bold',\n",
    "#                 'size' : 'small'}\n",
    "# plt.rc('font', **font_options)\n",
    "\n",
    "# 要了解全部的自定义选项， 请查阅 matplotlib 的配置文件 matplotlibrc\n",
    "#  （位于 matplotlib/mpl-data目录中） \n",
    "# 如果对该文件进行了自定义，并将其放在自己的 .matplotlibrc目录中，则每次使用 matplotlib时会加载该文件\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
